# 定义每个人的空闲时间段
andrew_availability = [(11, 15)]  # Andrew 从 11 am 到 3 pm空闲，24小时制，用整点表示
joanne_availability = [(12, 14), (15.5, 17)]  # Joanne 从中午到 2 pm空闲、3:30 pm到 5 pm空闲
hannah_availability = [(12, 12.5), (14, 18)]  # Hannah 从中午有半小时空闲、2 pm到6 pm空闲

# 将时间段的范围化为 30 分钟单位，将小时的小数形式转换成以小时和分钟表示的时间格式
def find_common_time(andrew, joanne, hannah):
    # 找出重叠的空闲时间段
    common_slots = []
    for a_start, a_end in andrew:
        for j_start, j_end in joanne:
            for h_start, h_end in hannah:
                start = max(a_start, j_start, h_start)
                end = min(a_end, j_end, h_end)
                # 判断重叠的时间段是否至少为30分钟
                if end - start >= 0.5:  # 0.5 表示30分钟
                    common_slots.append((start, start + 0.5))
    
    return common_slots

# 将时间转化为 12 小时制的显示格式
def format_time(hour):
    h = int(hour)
    m = int((hour - h) * 60)
    suffix = 'am' if h < 12 else 'pm'
    h = h if h <= 12 else h - 12
    if h == 0:
        h = 12
    return f'{h}:{m:02d} {suffix}'

# 找到三个人共同空闲的时间段
common_slots = find_common_time(andrew_availability, joanne_availability, hannah_availability)

# 打印结果
if common_slots:
    print("可用于安排三人进行会谈的时间段为：",end = '')
    for start, end in common_slots:
        print(f'{format_time(start)} - {format_time(end)}')
else:
    print("没有找到合适的会谈时间段。")
